<template>
    <!-- 
使用说明：
1）、引入category-cascader.vue
2）、语法：<category-cascader :categoryPath.sync="categoryPath"></category-cascader>
    解释：
      categoryPath：指定的值是cascader初始化需要显示的值，应该和父组件的categoryPath绑定;
          由于有sync修饰符，所以cascader路径变化以后自动会修改父的categoryPath，这是结合子组件this.$emit("update:categoryPath",v);做的
      -->
    <div>
        <el-cascader
            filterable
            clearable
            placeholder="试试搜索：手机"
            v-model="paths"
            :options="categorys"
            :props="defaultProps"
            :style="styles"
        ></el-cascader>
    </div>
</template>

<script>
//这里可以导入其他文件（比如：组件，工具js，第三方插件js，json文件，图片文件等等）
//例如：import 《组件名称》 from '《组件路径》';
import { listTree } from "@/api/product/pmscategory"
export default {
    //import引入的组件需要注入到对象中才能使用
    components: {},
    //接受父组件传来的值
    props: {
        categoryPath: {
            type: Array,
            default() {
                return [];
            }
        },
        styles: {
            type: String,
            default() {
                return 'width: 80%'
            }
        }
    },
    data() {
        //这里存放数据
        return {
            defaultProps: {
                value: "id",
                label: "name",
                children: "children"
            },
            categorys: [],
            paths: this.categoryPath
        };
    },
    watch: {
        categoryPath(v) {
            this.paths = this.categoryPath;
        },
        paths(v) {
            if(v.length > 0) {
                // 更新父组件的categoryPath的值
                this.$emit("update:categoryPath", v);
            }
            //还可以使用pubsub-js进行传值
            this.PubSub.publish("catePathId",v);
        }
    },
    //方法集合
    methods: {
        getCategorys() {
			listTree().then(res => {
				 this.categorys = res.data;
			})
        }
    },
    //生命周期 - 创建完成（可以访问当前this实例）
    created() {
        this.getCategorys();
    }
};
</script>
<style scoped></style>
